package com.manage.project.service;

import com.manage.project.bean.vo.FileUrl;
import io.minio.Result;
import io.minio.messages.Item;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface MinioService {

    /**
     * 创建公共权限的桶
     *
     * @param bucketName
     */
    Boolean createBucket(String bucketName);

    /**
     * 删除桶
     *
     * @param bucketName
     * @return
     */
    Boolean deleteBucket(String bucketName);

    /**
     * 桶是否存在
     *
     * @param bucketName
     * @return
     */
    Boolean bucketExists(String bucketName);


    /**
     * 列出所有桶名称
     *
     * @return
     */
    List<String> listBucketNames();

    /**
     * 列出桶中所有文件
     *
     * @param bucketName
     * @return
     */
    List<String> listFile(String bucketName);

    /**
     * 上传文件通过字节数组
     *
     * @param bytes
     * @param bucketName
     * @return
     */
    FileUrl uploadFile(byte[] bytes, String bucketName);

    /**
     * 上传文件通过流
     *
     * @param file       文件名
     * @param bucketName 桶名称
     * @return
     */
    FileUrl uploadFile(MultipartFile file, String bucketName);

    /**
     * 删除文件
     *
     * @param bucketName
     * @param fileName
     * @return
     */
    Boolean deleteFile(String bucketName, String fileName);

    /**
     * 删除文件
     *
     * @param bucketName
     * @param fileNames
     * @return
     */
    Boolean deleteFiles(String bucketName, List<String> fileNames);


}
